﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace hse_2013_database
{
    public partial class PasswordForm : Form
    {
        public PasswordForm()
        {
            InitializeComponent();
        }
        /// <summary>
        /// Аутентификация пользователя
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            string errShow = "Ошибки: \n";//строка для для справки об ошибках
            string login = "", password = "";//переменные для считывания информации
            bool errFlag1 = false, errFlag2 = false;//переменные принимающие true в случае неккоректного ввода 
            try
            {
                if (loginTextBox.Text == "") throw new InvalidExpressionException();//если не введен текст вызывает исключение
                login = loginTextBox.Text;//присваиваем login значение textbox1 при корректном вводе
            }
            catch//исключение при отсутствии текста
            {
                errFlag1 = true;
                errShow += "не введён текст в поле \"Имя пользователя\"\n";//добавляем в строку с ошибками данный текст
                loginTextBox.Clear();
            }
            try
            {
                if (passwordTextBox.Text == "") throw new InvalidExpressionException();//если не введен текст вызывает исключение
                password = passwordTextBox.Text;//присваиваем password значение textBox2 при корректном вводе
            }
            catch//исключение при отсутствии текста
            {
                errFlag2 = true;
                errShow += "не введён текст в поле \"Пароль\"\n";//добавляем в строку с ошибками данный текст
                passwordTextBox.Clear();
            }
            if (errFlag1 == true || errFlag2 == true)//при неккоректном вводе в каком-нибудь из TextBox выводится MessageBox с ошибками
                MessageBox.Show(errShow, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else//при корректном вводе
            {
                string[] str = new string[2];
                FileStream fs = new FileStream("../Password.bin", FileMode.Open);
                BinaryReader br = new BinaryReader(fs,Encoding.Default);
                char[] ch={';'};
                str=br.ReadString().Split(ch,StringSplitOptions.RemoveEmptyEntries);
                br.Close();
                fs.Close();
                loginTextBox.Clear();
                passwordTextBox.Clear();
                if (str[0]==login&&str[1]==password)//если пользователь прошел аутенфикацию
                {
                    MainForm mf = new MainForm();
                    mf.IsDemoVariant = false;
                    this.Hide();
                    mf.ShowDialog();
                    this.Show();
                   
                }
                else//если пользователь не прошел аутенфикацию
                {   //информация пользователю о неверном вводе
                    MessageBox.Show("Неправильно введено имя пользователя или пароль", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    
                }
            }
        }
        /// <summary>
        /// Переход в демо режим
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            MainForm mf = new MainForm();
            mf.IsDemoVariant = true;
            this.Hide();
            mf.ShowDialog();
            this.Show();
        }

        private void PasswordForm_Load(object sender, EventArgs e)
        {

        }

    }
}
